---@class GT.ui.prefab:GT.ui 模块ui
---@field module Str 界面模块模块ID
---@field model_uid Str 模块uid
GT.ui.prefab = class(GT.ui, false)

---@class prefab_data
---@field module Str 界面模块类型ID
---@field model_uid Str 模块uid

---创建模块UI
---@param data prefab_data
function GT.ui.prefab:ctor(data)
    self.module = data.module
    super(self, data)
    ---模块ui创建
    self.model_uid = self:create_ui_prefab_instance()
end

---@param data prefab_data
---@return GT.ui.prefab
function GT.ui.prefab.obj(data)
    return new(GT.ui.prefab, data)
end

---@generic T
---获得模块控件子UI
---@param path Str
---@param contorl T
---@return T contorl
function GT.ui.prefab:child(contorl, path)
    return new(contorl, { class=contorl, uid = self.get_ui_prefab_child_by_path(self.model_uid, tostring(path)), is_data_driven = true })
end

--- 创建界面模块
---@return Str
function GT.ui.prefab:create_ui_prefab_instance()
    return game_api.create_ui_prefab_instance(self.player.player, self.module, GT.ui.get_uid_absolute(self.player, self.parent) or self.parent)
end

--删除界面模块实例
function GT.ui.prefab:del()
    game_api.del_ui_prefab(self.model_uid)
end
